Data communication systems which provide for the transmission of a data file of information using sequentially numbered data packets are known. These systems currently operate according to high level communication system control procedures such as the high level data link control (HDLC) procedure. For a detailed description of the HDLC protocol, see International Standard ISO/IEC 4335: 1993, "Information technology--Telecommunications and information exchange between systems--High-level data link control (HDLC) procedure--Elements of Procedures", incorporated by reference herein. In these systems, a virtual connection is established from a transmitter to at least one receiver. The receiver monitors the incoming transmission for determining whether any of the data packets in the sequence are incorrect, in other words, missing from the sequence or unreadable as received. According to standard communication system operating protocols such as HDLC, the receiver which detects the data packet as incorrect issues a message signal requesting the retransmission of that data packet.
Several transmission system protocols are presently available for controlling the retransmission of data packets which are detected as incorrect. The "go back N" or reject retransmission protocol, for example, provides that a receiver which detects an incorrect data packet issue a message signal requesting the retransmission of all data packets starting sequentially from the data packet detected as incorrect. The reject protocol further requires that the receiver discard from memory those correctly received data packets which have sequence numbers that are higher than that corresponding to the data packet detected as incorrect. See ISO/IEC Standard 4335, cited above, for a detailed description of the reject retransmission protocol. The reject retransmission protocol, thus, unnecessarily requires the retransmission of data packets which are otherwise received correctly, thereby severely degrading transmission throughput.
The selective rejection data link protocol, described in further detail in ISO/IEC Standard 4335, cited above, represents another technique for controlling the retransmission of data packets. In general, selective rejection provides that a receiver issue responsive message signals to request for status message signals that a transmitter issues for requesting the status of data packets detected as incorrect at the receiver. A responsive message signal includes a request for the retransmission of only those data packets which are detected as incorrect. Data packets having sequence numbers which are higher than that of the data packet detected as incorrect and which have been correctly received at the receiver are not discarded and, thus, not included in the request for retransmission.
The selective rejection protocol reduces some unnecessary retransmissions that otherwise may be performed. However, this protocol may still cause unnecessary transmissions because of an inherent incapability of tracking requests for retransmission that is related to the propagation delay associated with the transmission of message signals between a transmitter and a receiver. For example, a duplicate request for retransmission of a data packet may be received at a transmitter after that data packet has already been retransmitted because, at the time the duplicate request was issued, the retransmitted data packet was in transit towards the receiver.
Several variations of the selective rejection protocol exist which attempt to correlate responses to requests for status with the retransmission of data packets for preventing unnecessary retransmissions. One proposed technique prevents a receiver from issuing a message signal requesting the retransmission of a data packet detected as incorrect until the receiver correctly receives a copy of a data packet which has a lower sequence number and has been previously detected as incorrect. This technique, however, does not provide favorable throughput efficiency.
Another selective rejection protocol technique, known as the CSRDLC protocol, described in detail in U.S. Pat. No. 4,439,859, incorporated by reference herein, utilizes the sequence numbers of data packets for correlating requests for retransmission with actual retransmissions and for determining whether retransmission of a data packet which is detected as incorrect is necessary. The CSRDLC approach, however, requires that data packets continue to be transmitted in sequence for effective correlation of requests, responses and retransmissions. As a result, after all data packets in a data file are originally transmitted, requests for retransmission can no longer be unambiguously correlated with the original transmissions for discerning which data packets have been retransmitted and, in turn, for avoiding unnecessary retransmissions.